import re

from 数据库 import 获取会话, 虎码


def 写码():
    级别 = {}
    with open('./原始资料/通用规范字表.txt', 'r', encoding='utf-8') as 通规字表:
        while 行 := 通规字表.readline():
            if 行.startswith('#') or 行.startswith('序号'):
                continue
            行 = 行.strip().split('\t')
            if 行[1] not in 级别:
                级别[行[1]] = 行[2]

    频数 = {}
    with open('./原始资料/tiger.dict.yaml', 'r', encoding='utf-8') as 码表:
        for i in range(11):
            码表.readline()
        while 行 := 码表.readline():
            行 = 行.strip().split('\t')
            if (行[0] not in 频数) or (int(行[2]) > 频数[行[0]]):
                频数[行[0]] = int(行[2])

    with 获取会话() as 会话:
        # 模式 = re.compile(r'^〔([^\s]+?)&nbsp;.*&nbsp;(\w+)〕$')
        模式 = re.compile(r'&nbsp;')
        with open('./原始资料/hu_cf.txt', 'r', encoding='utf-8') as 拆分表:
            while 行 := 拆分表.readline():
                行 = re.split(r'\s', 行.strip())
                字 = 行[0]
                文本 = 行[1]
                文本 = 文本.strip('〔').strip('〕')
                匹配 = 模式.split(文本)
                拆 = 匹配[0]
                码 = 匹配[2]
                if len(码) == 2:
                    码 = ''.join([码, 码[1]])

                try:
                    容 = set(匹配[3:])
                    for i in 容:
                        if i == 码:
                            容.remove(i)
                    容 = ','.join(容)
                except:
                    容 = ''
                条目 = 虎码(
                    字符 = 字,
                    拆分 = 拆,
                    全码 = 码,
                    级别 = 级别.get(字, None),
                    频数 = 频数.get(字, None),
                    容错 = 容,
                )
                会话.add(条目)

if __name__ == '__main__':
    写码()
